home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc International / Development / TSMTEsample⁄1.1 / Source / SamplePartUtils.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-11-14  |  6.1 KB  |  268 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SamplePartUtils.h
  3.  
  4.     Contains:    SamplePart utility functions & classes
  5.  
  6.     Written by:    Steve Smith
  7.  
  8.     Copyright:    © 1994,95 by Apple Computer, Inc., all rights reserved.
  9. */
  10.  
  11.  
  12. #ifndef _SAMPLEPARTUTILS_
  13. #define _SAMPLEPARTUTILS_
  14.  
  15. // --- SamplePart Includes ---
  16.  
  17. #ifndef _SAMPLECOLLECTIONS_
  18. #include "SampleCollections.h"
  19. #endif
  20.  
  21. // --- OpenDoc Includes ---
  22.  
  23. #ifndef _ODTYPES_
  24. #include <ODTypes.h>
  25. #endif
  26.  
  27. #ifndef SOM_ODFrame_xh
  28. #include <Frame.xh>
  29. #endif
  30.  
  31. // --- OpenDoc Utilities ---
  32.  
  33. #ifndef _ITEXT_
  34. #include <IText.h>
  35. #endif
  36.  
  37. #ifndef _ODUTILS_
  38. #include <ODUtils.h>
  39. #endif
  40.  
  41. #ifndef _ODDEBUG_
  42. #include <ODDebug.h>
  43. #endif
  44.  
  45. #ifndef _TEMPOBJ_
  46. #include <TempObj.h>
  47. #endif
  48.  
  49. // --- Macintosh Includes ---
  50.  
  51. #ifndef __TYPES__
  52. #include <Types.h>
  53. #endif
  54.  
  55. // --- Forward Declarations ---
  56. class ODDraft;
  57. class ODFacet;
  58. class ODWindow;
  59. class ODStorageUnitView;
  60.  
  61. //------------------------------------------------------------------------------
  62. // Function Prototypes
  63. //------------------------------------------------------------------------------
  64.  
  65. ODIText*        GetPartName(Environment* ev, ODPart* part, ODType category);
  66. ODBoolean        NamesAreEquivalent(Environment* ev, ODIText* fileName,
  67.                                         ODIText* partName);
  68. void            GetEditorScriptLanguage(Environment* ev, ODScriptCode* script,
  69.                                         ODLangCode* language);
  70. void             GetScriptLanguageFromRegion(long region, ODScriptCode* script, 
  71.                                             ODLangCode* language);
  72. void            FixedToIntRect(ODRect& fixedRect, Rect& intRect);
  73. void            IntToFixedRect(Rect& intRect, ODRect& fixedRect);
  74. void            LoadThumbnail(Environment* ev, Handle* thumbnail);
  75. Rect            TilePartWindow(Environment* ev, Rect* facetBounds,
  76.                                         Rect* partWindowBounds);
  77. ODUShort        CountFramesFacets(Environment* ev, ODFrame* frame);
  78.                                         
  79. //------------------------------------------------------------------------------
  80. // Utility Class Definitions
  81. //------------------------------------------------------------------------------
  82.  
  83. class CFrameProxy // (aka CFuton)
  84. {
  85.     public:
  86.     CFrameProxy();
  87.     ~CFrameProxy();
  88.     
  89.     void        InitFrameProxy(ODID frameID, ODDraft* draft);
  90.     void        InitFrameProxy(Environment* ev, ODFrame* frame);
  91.     void        Purge(Environment* ev);
  92.  
  93.     ODFrame*    GetFrame(Environment* ev);
  94.     void        SetFrame(Environment* ev, ODFrame* frame);
  95.     ODBoolean    FrameIsLoaded(Environment* ev);
  96.     ODID        GetID();
  97.     ODDraft*    GetDraft();
  98.     
  99.     private:
  100.     ODFrame*    fFrame;
  101.     ODID        fID;
  102.     ODDraft*    fDraft;
  103. };
  104.  
  105. class CFrameInfo
  106. {
  107.     public:
  108.             CFrameInfo(ODSession* session);
  109.             ~CFrameInfo();
  110.     
  111.     void    Externalize(Environment* ev, ODStorageUnitView* storageUnitView);
  112.     void    CleanseFrameInfoProperty(Environment* ev, ODStorageUnit* storageUnit);
  113.     void    ExternalizeFrameInfo(Environment* ev, ODStorageUnit* storageUnit,
  114.                                     ODDraftKey key, ODFrame* scopeFrame);
  115.     void    CloneInto(Environment *ev, ODDraftKey key,
  116.                                     ODStorageUnitView* storageUnitView,
  117.                                     ODFrame* scopeFrame);
  118.     void    InitFromStorage(Environment* ev, ODStorageUnitView* storageUnitView);
  119.                 
  120.     ODBoolean        IsFrameActive();
  121.     void            SetFrameActive(ODBoolean active);
  122.     ODBoolean        FrameNeedsReactivating();
  123.     void            SetFrameReactivate(ODBoolean reactivate);
  124.     ODFacet*        GetActiveFacet();
  125.     void            SetActiveFacet(ODFacet* facet);
  126.     void            SetSourceFrame(Environment* ev, ODFrame* frame);
  127.     ODFrame*        GetSourceFrame(Environment* ev);
  128.     void            ReleaseSourceFrame(Environment* ev);
  129.     ODBoolean        HasSourceFrame();
  130.     ODWindow*        AcquirePartWindow(Environment* ev);
  131.     void            SetPartWindow(Environment* ev, ODWindow* window);
  132.     void            SetDependentFrame(Environment* ev, ODFrame* frame);
  133.     ODFrame*        GetDependentFrame(Environment* ev);
  134.     ODBoolean        HasDependentFrame();
  135.     void            ReleaseDependentFrame(Environment* ev);
  136.     void            SetShouldDisposeWindow(ODBoolean should);
  137.     ODBoolean        ShouldDisposeWindow();
  138.     
  139.     private:
  140.     CFrameInfo(); /* don't want parts to call */
  141.     
  142.     ODSession*        fSession;
  143.     ODBoolean        fFrameActive;
  144.     ODBoolean        fFrameReactivate;
  145.     ODBoolean        fShouldDisposeWindow;
  146.     ODFacet*        fActiveFacet;
  147.     CFrameProxy*    fSourceFrame;
  148.     CFrameProxy*    fDependentFrame;
  149.     ODID            fPartWindowID;
  150. };
  151.  
  152.  
  153.  
  154.  
  155. //-------------------------------------------------------------------------
  156. // Inline methods
  157. //-------------------------------------------------------------------------
  158.  
  159. //=========================================================================
  160. // CFrameProxy
  161. //=========================================================================
  162.  
  163. inline CFrameProxy::CFrameProxy()
  164. {
  165.     fFrame = kODNULL;
  166.     fID = kODNULLID;
  167.     fDraft = kODNULL;
  168. }
  169.     
  170. inline CFrameProxy::~CFrameProxy()
  171. {
  172.     ODSafeReleaseObject(fFrame);
  173. }
  174.     
  175. inline void CFrameProxy::InitFrameProxy(ODID frameID, ODDraft* draft)
  176. {
  177.     ASSERT(draft!=kODNULL, kODErrIllegalNullInput);
  178.     
  179.     fFrame = kODNULL;
  180.     fID = frameID;
  181.     fDraft = draft;
  182. }
  183.     
  184. inline void CFrameProxy::InitFrameProxy(Environment* ev, ODFrame* frame)
  185. {
  186.     ASSERT(frame!=kODNULL, kODErrIllegalNullFrameInput);
  187.     
  188.     this->SetFrame(ev,frame);
  189. }
  190.  
  191. inline ODID CFrameProxy::GetID()
  192. {
  193.     return fID;
  194. }
  195.  
  196. inline ODDraft* CFrameProxy::GetDraft()
  197. {
  198.     return fDraft;
  199. }
  200.  
  201.  
  202. //=========================================================================
  203. // CFrameInfo
  204. //=========================================================================
  205.  
  206. inline ODBoolean CFrameInfo::IsFrameActive()
  207. {
  208.     return fFrameActive;
  209. }
  210.  
  211. inline void CFrameInfo::SetFrameActive(ODBoolean active)
  212. {
  213.     fFrameActive = active;
  214. }
  215.  
  216. inline ODBoolean CFrameInfo::FrameNeedsReactivating()
  217. {
  218.     return fFrameReactivate;
  219. }
  220.  
  221. inline void CFrameInfo::SetFrameReactivate(ODBoolean reactivate)
  222. {
  223.     fFrameReactivate = reactivate;
  224. }
  225.  
  226. inline ODFacet* CFrameInfo::GetActiveFacet()
  227. {
  228.     return fActiveFacet;
  229. }
  230.  
  231. inline void CFrameInfo::SetActiveFacet(ODFacet* facet)
  232. {
  233.     fActiveFacet = facet;
  234. }
  235.  
  236. inline ODFrame* CFrameInfo::GetSourceFrame(Environment* ev)
  237. {
  238.     return (fSourceFrame->GetFrame(ev));
  239. }
  240.  
  241. inline ODBoolean CFrameInfo::HasSourceFrame()
  242. {
  243.     return (fSourceFrame != kODNULL);
  244. }
  245.  
  246. inline ODFrame* CFrameInfo::GetDependentFrame(Environment* ev)
  247. {
  248.     return (fDependentFrame->GetFrame(ev));
  249. }
  250.  
  251. inline ODBoolean CFrameInfo::HasDependentFrame()
  252. {
  253.     return (fDependentFrame != kODNULL);
  254. }
  255.  
  256. inline void CFrameInfo::SetShouldDisposeWindow(ODBoolean should)
  257. {
  258.     fShouldDisposeWindow = should;
  259. }
  260.  
  261. inline ODBoolean CFrameInfo::ShouldDisposeWindow()
  262. {
  263.     return fShouldDisposeWindow;
  264. }
  265.  
  266. #endif
  267.  
  268.